import Vue from 'vue'
import Vuex from 'vuex'
import card from './modules/card'
import user from './modules/user'
import enterprise from './modules/enterprise'
import createPersistedState from 'vuex-persistedstate'
import menu from './modules/menu'
import Cookies from 'js-cookie'
Vue.use(Vuex)

const store = new Vuex.Store({
  plugins: [
    createPersistedState({
      key: 'hm--vuex-token', // 存储在 localStorage 中的键名，默认为 'vuex'
      // storage: window.localStorage, // 或者 window.sessionStorage，默认为 localStorage
      storage: {
        getItem: (key) => {
          // 从 Cookies 中获取指定键的值。
          return Cookies.get(key)
        },
        // Please see https://github.com/js-cookie/js-cookie#json, on how to handle JSON.
        setItem: (key, value) =>
          Cookies.set(key, value, { expires: new Date(Date.now() + 1000 * 60 * 60 * 2) }),
        // 将指定的键值对存储到 Cookies 中，并设置过期时间为 2 小时。
        removeItem: key => Cookies.remove(key)
        // 从 Cookies 中删除指定键的值
      },
      paths: ['user.token']
      // 指定哪些状态路径下的数据需要持久化存储
      // 存储指定路径下的 state
    })
  ],
  // 组合模块的配置项
  modules: {
    user,
    card,
    enterprise,
    menu
  }

})

export default store
